"""
车辆运行的数学模型部分。

主要函数move作为接口调用，其他改进函数都在move函数里得到调用。
"""

def move(TIME_SHEET, TIME_INTERVAL, car_data ):
    """
    输入实例的各种参数组成的字典，给出计算结果对应的字典。

    Parameters
    ----------
    **kwargs : TYPE
        DESCRIPTION.

    Returns
    -------
    None.

    """

    # 制作数组切片，增加可读性。
    car_data_pos =car_data[:, 0, :]
    car_data_speed =car_data[:, 1, :]
    for t in TIME_SHEET[:-1]:  # 迭代计算位置，砍一个时间防止索引超大
        car_data_pos[:, t+1]=car_data_pos[:, t] + car_data_speed[:, t] * TIME_INTERVAL
    return car_data

if __name__ == '__main__':
    import numpy as np
    # =============================================================================
    # 供修改的参数列表
    END_TIME = 10  # 分钟(min)
    CAR_NUM=3
    TIME_INTERVAL = 0.1

    # =============================================================================
    TIME_SHEET = np.arange(0, END_TIME * 60, dtype=np.int64)  # 时间间隔取0.1秒，运动员的反应速度

    car_data = np.zeros((CAR_NUM, 2, np.size(TIME_SHEET)))


    # 初始条件
    for i in np.arange(0, CAR_NUM):  # 赋初值，按照不同行的车，赋予列上的位置和速度
        car_data[i][0][0] = i  # 赋予初位移position
        car_data[i][1][:] = i+1  # 赋予初速度speed

    # 时间迭代
    car_data = move(TIME_SHEET, TIME_INTERVAL, car_data )